package leetcode_1000;


/**
 *@author 周杨
 *PrisonCellsAfterNDays_957 对于数组里的每一个元素 如果相邻都是0或者1 就置为1 否则置为0 问n次改变后数组的结果
 *describe:数学问题 14次就是一个循环 我也不知道为什么 AC100%
 *2018年12月17日 上午10:43:58
 */
public class PrisonCellsAfterNDays_957 {
	public static void main(String[] args) {
//		PrisonCellsAfterNDays_957 test = new PrisonCellsAfterNDays_957();
//		int res[] = test.prisonAfterNDays(new int[] {0,1,0,1,1,0,0,1},7);
	}
	
	public int[] prisonAfterNDays(int[] cells, int N) {
        if(N == 0) return cells;
        N = N%14 == 0? 14 : N%14;
        while(N > 0) {
        	int pre = cells[0];
        	for(int i=1;i < cells.length-1;++i) {
        		int temp = (cells[i-1]^cells[i+1]) == 1? 0:1;
        		cells[i-1] = pre;
        		pre = temp;
        	}
        	cells[cells.length-2] = pre;
        	cells[0] = 0;
        	cells[cells.length-1] = 0;
        	--N;
        }
        return cells;
    }
}
